/**
 * Electron 应用国际化管理器
 * 负责优化 locale 文件，只保留简体中文和英文
 */

class LocaleManager {
    constructor() {
        this.supportedLocales = ['en-US', 'zh-CN'];
        this.isElectron = typeof window !== 'undefined' && window.process && window.process.type === 'renderer';
    }

    /**
     * 获取当前系统语言
     * @returns {string} 语言代码
     */
    getCurrentLocale() {
        if (this.isElectron) {
            // 在 Electron 渲染进程中
            const locale = navigator.language || navigator.userLanguage;
            return this.mapToSupportedLocale(locale);
        } else {
            // 在主进程中
            const { app } = require('electron');
            const locale = app.getLocale();
            return this.mapToSupportedLocale(locale);
        }
    }

    /**
     * 将系统语言映射到支持的语言
     * @param {string} locale 系统语言代码
     * @returns {string} 支持的语言代码
     */
    mapToSupportedLocale(locale) {
        // 简体中文相关的语言代码
        if (locale.startsWith('zh-CN') || locale.startsWith('zh-Hans') || locale === 'zh') {
            return 'zh-CN';
        }
        
        // 其他情况默认使用英文
        return 'en-US';
    }

    /**
     * 获取语言显示名称
     * @param {string} locale 语言代码
     * @returns {string} 语言显示名称
     */
    getLocaleDisplayName(locale) {
        const names = {
            'en-US': 'English',
            'zh-CN': '简体中文'
        };
        return names[locale] || locale;
    }

    /**
     * 获取支持的语言列表
     * @returns {Array} 支持的语言列表
     */
    getSupportedLocales() {
        return this.supportedLocales.map(locale => ({
            code: locale,
            name: this.getLocaleDisplayName(locale)
        }));
    }
}

// 导出单例实例
const localeManager = new LocaleManager();

module.exports = localeManager;